package de.dhbw.karlsruhe.picsim.model.timer;

import org.jetbrains.annotations.NotNull;

/**
 * Created by IntelliJ IDEA.
 * User: goesen
 * Date: Apr 27, 2010
 * Time: 4:12:26 PM
 */
public interface TimerFacade {
    /**
     * wird bei jedem Circle Prozessor circle aufgerufen.
     * <p/>
     * Wenn Timer0 in Timer mode, wird er erhöht, auf jeden Fall aber der Watchdog
     */
    void circle();

    /**
     * bei einem write ins Timer Register muss möglicherweise der Prescaler resetet werden
     */
    void writeToTimerRegister();

    /**
     * löscht den watchdog und prescaler falls notwendig
     * (der Befehl CLRWDT)
     */
    void clearWatchdog();

    void addWatchdogTimeOutListener(@NotNull ObservableTimer.TimeoutListener listener);

    void removeWatchdogTimeOutListener(@NotNull ObservableTimer.TimeoutListener listener);

}
